前回までのチュートリアルで、ToDoフォームの登録まで行いました
登録フォームは、フォルダプラグインとembedプラグインの組み合わせで行い
phpプログラムは使用していません
ここでは、phpプログラムを追加し、ToDoフォームの変更タイミングに同時にページタイトルが変更されるようにします
まず、embedプラグインが修正するタイミングを捕まえる必要があります
これは事前に、embedプラグイン側でフックが準備されています
embedプラグインの変更直前に発生するフックは以下のコードで実装できます
$plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_hook';
function my_hook (&$page_ar) {
フック処理
}
グローバル変数の$plugin_arを直接変更します
フック関数の引数 $page_ar には ページ配列はそのまま渡されます
embedの場合、フックした処理を正常ルートに戻す場合はそのまま終了
そうでない場合は、falseを明示的に戻してください
具体的には次の通り
global $plugin_ar; $plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_hook'; function my_hook (&$page_ar) { if (isset($page_ar['meta']['plugin_embed']['title']) && $page_ar['title'] != $page_ar['meta']['plugin_embed']['title']) { $page_ar['title'] = $page_ar['meta']['plugin_embed']['title']; if (!mod_data_items($page_ar)) { return false; } } }
ページ配列に指定してあるタイトルと、embedプラグインの収納先の name:title 配列の値が一致しなかったら書き換える処理です
なお、page_arには、全て更新された状態で呼び出されますので、mod_data_items で修正し終了しても構いません
次に、phpプログラムを何処に書くかですが、これにはテンプレートモジュールを使用します
先ほどのコードに、以下のヘッダをつけ、my_todo.phpという名前で保存します
<?php /* name : myTodo */ global $plugin_ar; $plugin_ar[ EMBED_ID ]['onbefore_modified'] = 'my_hook'; function my_hook (&$page_ar) { if (isset($page_ar['meta']['plugin_embed']['title']) && $page_ar['title'] != $page_ar['meta']['plugin_embed']['title']) { $page_ar['title'] = $page_ar['meta']['plugin_embed']['title']; if (!mod_data_items($page_ar)) { return false; } } }
できたファイルを、files/1/plugin フォルダまたは、 files/1/data フォルダのいずれかに設置します
後は、todoURLを開き
ページプロパティでlwr template で編集アイコンをクリック、myTodoを選択すればOkです
これで、次から追加されたTodoでは自動的にタイトルとタイトルフィールドが連動するようになります
次は、Todoの一覧表を作ります